热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

相位|量纲_matlab信号的频域分析

篇首语:本文由编程笔记#小编为大家整理,主要介绍了matlab信号的频域分析相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了matlab 信号的频域分析相关的知识,希望对你有一定的参考价值。


%画出频率为100Hz和300Hz的复合正弦波
Fs=5120;N=1024;
dt=1.0/5120;T=dt*N;
t=linspace(0, T, N);
x=10*sin(2*pi* 100 *t) + 10/3*sin(2*pi* 3*100 *t);
plot(t, x);
%对复合正弦波进行傅里叶变换,得到一个复数
y=fft(x, N);
a=real(y);b=imag(y);%a为y的实部,b为y的虚部
figure;
subplot(2, 1, 1);plot(a);
subplot(2, 1, 2);plot(b);
%A1为y的幅值,Q1为y的相位
A1=abs(y);
Q1=angle(y)*180/pi;%算出弧度,角度是angle(y),角度变弧度需要 *180/pi
figure;
subplot(2, 1, 1);plot(A1);
subplot(2, 1, 2);plot(Q1);


下面是频率为100Hz和300Hz的复合正弦波

傅里叶变换后的实部(上图)和虚部(下图)图

傅里叶变换后的幅值图(上图)和相位图(下图)

实际上,上面的幅值和相位图存在问题
问题1:显示了负频率部分

问题2:X坐标不是频率
问题3:幅值量纲未还原,幅值应该是 10,10/3

更改后的代码

%A1=abs(y);Q1=angle(y)*180/pi;
%figure;
%subplot(2, 1, 1);plot(A1);
%subplot(2, 1, 2);plot(Q1);%算出弧度,角度是angle(y),角度变弧度需要 *180/pi
f=linspace(0, Fs/2, N/2);%定义X坐标为频率,且频率的范围是[0, Fs/2]
A1=abs(y)/(N/2);%还原幅值的量纲,使它最终变为 10,10/3
Q1=angle(y)*180/pi;%算出弧度,角度是angle(y),角度变弧度需要 *180/pi
figure;
subplot(2, 1, 1);
plot(f, A1(1:N/2));
subplot(2, 1, 2);
plot(f, Q1(1:N/2));


在之前的代码的基础上增加功率谱对数功率谱
功率谱就是对幅值进行平方
对数功率谱是对功率谱进行取对数运算

A2=A1.^2;%功率谱
P2=20*log10(A2);%对数功率谱,dB=20*log(P)
figure;
subplot(2, 1, 1);
plot(f, A2(1:N/2));%只画数组A2的[1,N/2]部分
subplot(2, 1, 2);
plot(f, P2(1:N/2));%只画数组P2的[1,N/2]部分

功率谱是上图,对数功率谱是下图,对数功率谱可以更加明显地看出来功率谱中幅值比较小地部分

下面是方波信号的功率谱和对数功率谱,可以非常明显的体会到为什么使用对数功率谱。


推荐阅读
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
  • 本文介绍如何使用 Python 的 xlrd 库读取 Excel 文件,并将其数据处理后存储到数据库中。通过实际案例,详细讲解了文件路径、合并单元格处理等常见问题。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • HBase运维工具全解析
    本文深入探讨了HBase常用的运维工具,详细介绍了每种工具的功能、使用场景及操作示例。对于HBase的开发人员和运维工程师来说,这些工具是日常管理和故障排查的重要手段。 ... [详细]
  • C# LiNQ 查询 join连接
    C# LiNQ 查询 join连接 ... [详细]
  • 探索如何使用公共数据集为您的编程项目提供动力。无论您是编程新手还是有经验的开发者,本文将为您提供实用建议和资源,帮助您启动并运行一个创新的数据驱动型项目。 ... [详细]
  • Java 数组及其常用操作
    本文详细介绍了 Java 中的数组类型、定义方法以及常见操作,帮助开发者更好地理解和使用 Java 数组。 ... [详细]
  • 本文详细介绍了JavaScript中数组的两个重要高阶函数:map()和reduce()。map()用于将数组中的每个元素通过指定的函数进行处理并返回一个新的数组,而reduce()则用于对数组中的元素进行累积计算,最终返回一个单一值。 ... [详细]
  • 本文详细介绍超文本标记语言(HTML)的基本概念与语法结构。HTML是构建网页的核心语言,通过标记标签描述页面内容,帮助开发者创建结构化、语义化的Web页面。 ... [详细]
  • 开发笔记:9.八大排序
    开发笔记:9.八大排序 ... [详细]
  • 哈密顿回路问题旨在寻找一个简单回路,该回路包含图中的每个顶点。本文将介绍如何判断给定的路径是否构成哈密顿回路。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 本文详细介绍如何在王者荣耀中设置公屏打字,包括半屏键盘的配置方法和常见问题解决技巧。 ... [详细]
  • 深入理解一致性哈希算法及其应用
    本文详细介绍了分布式系统中的一致性哈希算法,探讨其原理、优势及应用场景,帮助读者全面掌握这一关键技术。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
author-avatar
拍友2502882315
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有